home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SOLAR / Vector Generators / Arrays / magic-squares < prev    next >
Lisp/Scheme  |  1998-10-23  |  2KB  |  45 lines

  1. magic-squares
  2.  
  3. Magic squares are useful arrays to control compositional structures. They were used by Bach to determine the number of bars within sections and passages.
  4.  
  5. A useful magic square is defined as a 3x3 array:
  6.  
  7. (setq magic-square3
  8.       (build-array
  9.        '((4 9 2)
  10.          (3 5 7)
  11.          (8 1 6))))
  12.  
  13. The first 9 numbers can be arranged in a magic square so that all rows, columns and both diagonals have the same sum, 15. This can be done in essentially only one way, all solutions being related by reflections and rotations to each other.
  14.  
  15. This magic cube was also known by the ancient Chinese. The pattern has beautiful properties. The number 5, halfway between 1 and 9, naturally occupies the middle cell.
  16.  
  17. All four lines through the central 5 are in arithmetical progression, with differences 1, 2, 3, 4 rotating anti-clockwise from 6-5-4 to 9-5-1. The sum of the squares of the first and third colums are equal: 4^2+3^2+8^2=2^2+7^2 +6^2=89. The middle column gives 9^2+5^2+1^2=107=89+18. The squares of the numbers in the rows sum to 101, 83 and 101, and 101-83=18.
  18.  
  19. There are 8 ways in which the magic total 15 can be made by adding 3 of the integers 1 to 9. Each of these 8 ways occurs once in the square.
  20.  
  21. Another useful magic square is a 4x4 array:
  22.  
  23. (setq magic-square4
  24.       (build-array
  25.        '((12  13    1    8)
  26.          (6    3   15   10)
  27.          (7    2   14   11)
  28.          (9   16    4    5))))
  29.  
  30. To return the magic square elements use pick-array.
  31.  
  32. (pick-array 0 0 4 magic-square4 :right)
  33. --> (12 13 1 8)
  34. (pick-array 0 2 4 magic-square4 :right)
  35. --> (1 8 12 13)
  36. (pick-array 1 0 4 magic-square4 :right)
  37. --> (6 3 15 10)
  38. (pick-array 1 0 4 magic-square4 :down)
  39. --> (6 7 9 12)
  40. (pick-array 0 0 4 magic-square4 :diagonal-down)
  41. --> (12 3 14 5)
  42. (pick-array 3 0 4 magic-square4 :diagonal-up)
  43.  
  44. The sum of the cubes of the numbers along each diagonal are equal, to 4624=68^2. The sum of the squares of the numbers in the 1st and 4th rows are equal. The same property is shared in the 2nd and 3rd rows and by 1st and 4th columns and the 2nd and 3rn colums.
  45.